home *** CD-ROM | disk | FTP | other *** search
/ Revista CD Expert 8 / Revista CD Expert nº 08 CD1.iso / Utilitarios / Programacao / Pacific C for DOS / HELP / PPD.HLP < prev    next >
Text File  |  1995-11-14  |  14KB  |  317 lines

  1. INDEX 7 106 PPD
  2. 1390 88 Compiler optimizations
  3. 7777 106 Editor Searching
  4. 6183 11 Heap size
  5. 30 28 Memory models and chip types
  6. 13403 20 PPD command line options
  7. 11807 27 String search
  8. 6792 21 User defined commands
  9. %Memory models and chip types
  10. Available processor types are:
  11.  
  12. 8086 or 8088    This selection will produce code that will run on any
  13.                 8086 family processor.
  14.  
  15. 80186, 80188 or 80286
  16.                 This chip selection will allow the compiler to generate
  17.                 code using instructions only present on these processors
  18.                 (or on later processors like the 80386).
  19.  
  20. Small           This memory model allows one 64K code segment and one
  21.                 64K data and stack segment.  More data may be accessed
  22.                 via far pointers and variables.
  23.  
  24. Large           The large model allows multiple code and data segments.
  25.                 The only limit on code or data is memory size.  Due to
  26.                 the 8086 architecture, the stack is still limited to 64K.
  27.  
  28. Hardware (8087) floating point
  29.                 This toggle will tell the compiler whether to generate 
  30.                 inline 8087 code or calls to the floating point library.
  31.                 8087 code will not run unless an 8087, 80287 or 80387
  32.                 co-processor is present on an 80486 or Pentium processor
  33.                 is being used.  Code using the floating point library
  34.                 calls will still take advantage of an 8087 because the
  35.                 floating point library auto-detects the presence of a
  36.                 co-processor.
  37.  
  38. %Compiler optimizations
  39. An "optimization" is a transformation performed by the compiler on
  40. a program to make it smaller and/or faster.
  41.  
  42. The compiler performs many optimizations, some automatically, some
  43. only when requested.  The Optimization dialog box allows selection
  44. of optimizations to be performed when compiling:
  45.  
  46. Global:         Global optimization is performed one function at
  47.                 a time and aims to optimize the use of registers
  48.                 within whole functions.  When used, this allocates
  49.                 variables to registers based on analysis of which
  50.                 variables will benefit most. This optimization can
  51.                 be quite time consuming on large functions.  It is
  52.                 possible for the code generator to run out of
  53.                 memory when performing global optimization. The
  54.                 function size should be reduced if this occurs.
  55.  
  56. Peephole:       Peephole optimization is a process of examining
  57.                 generated assembler code and "improving" it. This
  58.                 includes redundant load/store optimization, branch
  59.                 optimization, and substitution of faster or shorter
  60.                 instructions.  Whole functions are optimized at a
  61.                 time, and it is possible for the optimizer to run
  62.                 out of memory on large functions.
  63.  
  64. Assembler:      The assembler attempts to turn long branches or
  65.                 jumps into short branches when this is used. This
  66.                 does not use extra memory, but can increase the
  67.                 compile time.
  68.  
  69. Alignment:      The compiler includes an optional optimization pass
  70.                 which aligns function entry points, code following
  71.                 JMP instructions and labels within the code on
  72.                 specified memory boundaries.  Alignment is userful
  73.                 when producing code to for newer 80x86 processors
  74.                 such as the 80386, 80486 and Pentium.  This pass
  75.                 will be skipped if no alignments are specified.
  76.  
  77.                 Each class of alignment may be individually enabled
  78.                 or disabled based on values entered in "Optimization"
  79.                 dialog.  A value of 0 means that a particular form
  80.                 of alignment is disabled.  Other valid alignments are
  81.                 2, 4, 8 and 16.  Alignments of 2 are useful on 8086,
  82.                 80186, 80286 and 80386SX processors.  4 is optimal
  83.                 on the 80386, use 16 on the 80486 and Pentium.
  84.  
  85.                 When selecting alignment values bear in mind that
  86.                 you are trading off code size for relatively minor
  87.                 improvements in program performance considering that
  88.                 the newer processors where large alignments help are
  89.                 much much faster than earlier processors anyway.
  90.  
  91.                 For the best size/speed tradeoffs, suggested values
  92.                 are as follows:
  93.  
  94.                 8088, 80C188          no alignment optimization
  95.                 8086/186/286/386SX    function:2,  jump:2, label:2
  96.                 80386DX               function:4,  jump:4, label:4
  97.                 80486, Pentium        function:16, jump:4, label:4
  98.  
  99.                 The three alignment optimizations available are:
  100.  
  101. Function:       This value specifies the memory alignment on which
  102.                 C function entry points will be located.  This has
  103.                 the least effect on program size of all alignments
  104.                 and can improve performance of small functions on
  105.                 the 80486 and Pentium.  Use 2 on 80286 processors,
  106.                 4 on 80386 and 16 on 80486 and Pentium.
  107.  
  108. Jump:           This value specifies a boundary on which code after
  109.                 JMP instructions will be placed.  JMP alignment can
  110.                 improve the performance of while(), for() switch()
  111.                 and goto constructs, but has considerably more impact
  112.                 on program size than function entry point alignment.
  113.                 For 80386, 80486 and Pentium an alignment of 4 is a
  114.                 good tradeoff.
  115.  
  116. Label:          This value specifies the alignment which will be used
  117.                 for compiler generated labels starting with "l" and
  118.                 "L".  This optimization improves the performance of
  119.                 if() constructs, switch() cases and other code which
  120.                 performs conditional branches.  Note that this may
  121.                 make code run slower where a conditional branch is not
  122.                 taken, as NOP instructions will be used to pad before
  123.                 each label.  Generally, values of 0, 2 or 4 should be
  124.                 used for label alignment.  16 will cause a sustantial
  125.                 code size increase for very speed improvement
  126.  
  127. %Heap size
  128. The "heap size" value is placed in the .EXE file header to tell DOS
  129. how much heap and stack space should initially be allocated to the
  130. program.  With Pacific C, it is used to limit the size of "near"
  131. data and heap, there is no "far" heap as such because the Pacific C
  132. memory allocation routines use MS-DOS system calls to obtain memory.
  133.  
  134. The heap size should be entered as a hexadecimal value between 0 and
  135. 10000 (hex) inclusive.  The default value is 0, which tells Pacific C
  136. to use a default heap size of 64K bytes.  If a value larger than 64K
  137. is specified, it will not be accepted.
  138.  
  139. %User defined commands
  140. The "User command setup" dialog allows four user defined external
  141. commands to be added to the Utility menu.  Each user defined command
  142. entry consists of two strings; the menu entry which will be displayed
  143. in the Utility menu, and the command line which will be executed by
  144. DOS when the menu item is selected.  Typically the user commands will
  145. be used to interface to external debuggers and editors.
  146.  
  147. A number of macros may be used within user defined commands to allow
  148. substitution of useful filenames.  The available macros are:
  149.  
  150.         $(EDIT)       Current PPD edit file
  151.         $(OUTFILE)    Current output file name
  152.         $(CWD)        Current working directory
  153.         $(LIB)        Compiler LIB directory path
  154.         $(INC)        Compiler INCLUDE directory path
  155.         $(PROJ)       Name of current project file
  156.  
  157. For example, a user defined command which passes the current PPD
  158. edit file to an external editor called EDIT would be:
  159.  
  160.         EDIT $(EDIT)
  161. %Editor Searching
  162. The editor allows search and search/replace forwards or backwards, using
  163. either simple strings, or "regular expressions".  The search/replace dialog
  164. can be accessed via several paths:
  165.  
  166. 1.      by using the WordStar style commands Ctrl-Q A and Ctrl-Q F.
  167. 2.      by clicking the "Search" button in the editor window.
  168. 3.      by pressing F2 in the editor window.
  169. 4.      by the "Search ..." or "Replace ..." items in the "Edit" menu.
  170.  
  171. The search/replace dialog allows both search and replace operations to be
  172. selected, starting from any of the search/replace commands.  The settings
  173. in the dialog will default to appropriate values based on the previous
  174. operation and the method used to activate the dialog.  Selection between
  175. search and replace operations is performed using the "Replace - F3" check
  176. box.  If performing a replace operation, the check box "Global - F5" allows
  177. an interactive global search/replace to be performed.  The "Replace all - F6"
  178. check box allows all instances of the search string to be replaced without
  179. asking.  You can select between case sensitive and case insensitive searching
  180. using the "Case sensitive - F4" check box.
  181.  
  182. In addition to the search/replace commands which display the dialog, the
  183. editor also allows the previous search/replace operation to be repeated
  184. in either a forward or backward direction.  This can be achieved using the
  185. following key or mouse strokes:
  186.  
  187. Search for NEXT:          Ctrl-L or Shift-F2 or click the NEXT button.
  188. Search for PREVIOUS:      Ctrl-L or Ctrl-F2 or click the PREV button.
  189.  
  190. REGULAR EXPRESSION MATCHING
  191.  
  192. Regular expressions are a generalization of "wild card" matching.  A
  193. regular expression can include literal text (e.g. "abcdef") or various
  194. special characters that are interepreted specially when comparing the
  195. search string with the text in the editor.  In brief, the special
  196. characters are:
  197.  
  198. ^       Match start of line
  199. $       Match end of line
  200. ?       Match any character
  201. *       Repeat previous expression
  202. \( \)   Group a sequence
  203. [ ]     Specify a range or set of characters to match
  204. \       Escape a special character
  205.  
  206. In more detail:
  207.  
  208. ^       Use at the beginning of a search string to anchor the search
  209.         to the beginning of the line, e.g.
  210.  
  211.            ^#define
  212.  
  213.         will match #define only if it is at the beginning of a line.
  214.  
  215. $       Matches the end of a line, e.g.
  216.  
  217.            0);$
  218.  
  219.         will match "0);" only at the end of a line.
  220.  
  221. ?       matches any character, e.g. 
  222.  
  223.           ??xyz?
  224.  
  225.         would match any of:
  226.  
  227.           "12xyzb", "..xyz1" or "AAxyzA"
  228.  
  229. *       means any number of repetitions of the previous regular
  230.         expression.  The previous regular expression is either a
  231.         single character, or a parenthesized expression or range
  232.         as below. For example:
  233.  
  234.            ab*
  235.  
  236.         will match the letter 'a' followed by zero or more letters 'b'.
  237.  
  238. \(  \)  These two character pairs enclose a regular expression that
  239.         can be the subject of the * repetition character, e.g
  240.  
  241.            ab\(ab\)*
  242.  
  243.         will match one or more sequences of "ab", e.g. "ababab". Note
  244.         that the first "ab" must be matched with "ab", and the sequence
  245.         inside the parentheses can match zero or more sequences of "ab".
  246.  
  247. [   ]   These brackets are used to enclose a character range or set.
  248.         Within the brackets can be any number of single characters,
  249.         or pairs of characters separated by a dash. For example:
  250.  
  251.           [ABCDEF0-9]
  252.  
  253.         will match any upper case alphabetic from A to F, or any digit.
  254.         If it is desired to include a dash in the set, make it the first
  255.         or last character. Similarly, the right bracket (]) must be first
  256.         if it is to be part of the set. For example:
  257.  
  258.           []a-f-]
  259.  
  260.         will match any lower case alphabetic, ] or -.
  261.  
  262. \       Escape any special character. Precede any of ?, *, $, ^ or [
  263.         to force them to be treated literally. For example:
  264.  
  265.           \*\**
  266.  
  267.         will match one or more asterisks in sequence.
  268. %String search
  269. The string search dialog is used to access a "grep" like utility which
  270. will perform a search of one or more files for a specified target string.
  271. The search string may consist of any sequence of characters, including
  272. spaces.  The default behaviour is to perform a case insensitive search
  273. where lower case and upper case characters are treated as equivalent.
  274. If the "Case sensitive - F4" check box is selected, a case sensitive
  275. search may be performed.
  276.  
  277. The list of files to search may be specified either by typing a list
  278. of wildcards in the "File list:" edit line, or by selecting the check
  279. box: "Current project - F6".  The file list entered may consist of one
  280. or more file names or wildcards.  If the same file is selected by more
  281. than one wildcard, the file will only be searched once.  If "Current
  282. project" is selected, all source files in the current PPD project will be
  283. searched for the target string.  If you wish to search a user specified
  284. file list, select the "File list - F5" check box.
  285.  
  286. The results of the search will be displayed in the "String search:" window.
  287. You may move between entries in this window using the mouse, window scroll
  288. bar, or the arrow/cursor keys on the keypad.  To select a search result,
  289. double click the mouse in its entry, or press enter when the desired line
  290. is highlighted.  When a selection is made, the selected file will be loaded
  291. into the PPD editor with the cursor and search highlight positioned on
  292. the selected text.
  293.  
  294. The "Search F2" button in the "String search:" window may be used to search
  295. again without using the menu.
  296. %PPD command line options
  297. Pacific C is invoked by the PPD command. Options to the
  298. PPD command are:
  299.  
  300.         /screen:25
  301.         /screen:28
  302.         /screen:43
  303.         /screen:50
  304.  
  305. These options set the DOS screen size to the specified number
  306. of lines. A VGA or better display is needed for 50 lines, an
  307. EGA or better for the others.
  308.  
  309. PPD will also take a file name, which may be a project file
  310. name or a source file name. For example:
  311.  
  312. ppd /screen:43 testing
  313.  
  314. will start up PPD in 43 line mode, and look for a file TESTING.PRJ
  315. or a file TESTING.C. A project file will be loaded, and a source
  316. file will be loaded into the editor.
  317.